package com.zenithmind.news.service;

import com.zenithmind.news.pojo.entity.News;

/**
 * 新闻推送服务接口 - 遵循接口隔离原则
 * 专门负责新闻的实时推送功能
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
public interface NewsPushService {

    /**
     * 实时推送新闻
     * 
     * @param news 新闻对象
     * @return 是否成功
     */
    Boolean pushNews(News news);

    /**
     * 推送新闻给指定用户
     * 
     * @param userId 用户ID
     * @param news 新闻对象
     * @return 是否成功
     */
    Boolean pushNewsToUser(String userId, News news);

    /**
     * 推送新闻给分类订阅者
     * 
     * @param categoryId 分类ID
     * @param news 新闻对象
     * @return 是否成功
     */
    Boolean pushNewsToCategory(String categoryId, News news);

    /**
     * 推送新闻给标签订阅者
     * 
     * @param tag 标签
     * @param news 新闻对象
     * @return 是否成功
     */
    Boolean pushNewsToTag(String tag, News news);

    /**
     * 广播新闻给所有用户
     * 
     * @param news 新闻对象
     * @return 是否成功
     */
    Boolean broadcastNews(News news);
}
